#ifndef __KEYBOARDMANAGER_H__
#define __KEYBOARDMANAGER_H__

#include <Metgine/Input/InputManager.h>



namespace Metgine
{
namespace Input
{

class METGINE_API KeyboardManager : public InputManager, public Core::Singleton<KeyboardManager>
{
    friend class Core::Singleton<KeyboardManager>;
    public:
        void Update();
        bool IsKeyDown(sf::Key::Code);
        bool IsKeyUp(sf::Key::Code);
        bool IsKeyReleased(sf::Key::Code);
        bool IsAnyKeyDown();
        bool IsAnyKeyReleased();
        void SetKey(sf::Key::Code, bool);
        sf::Key::Code GetLastPressed();
        sf::Key::Code GetLastReleased();
    protected:
    private:
        KeyboardManager() {};
        ~KeyboardManager() {};
        bool m_pressedKeys[sf::Key::Count];
        sf::Key::Code m_lastPressed;
        sf::Key::Code m_lastReleased;

};

}; // Input
}; // Metgine


#endif // KEYBOARDMANAGER_H
